# 求最大公约数
a,b=map(int,input().split())
l=[]
m=max(a,b)
i=1
while i<=m:
    if a%i==0 and b%i==0:
        l.append(i)
    i+=1
L=max(l)
print(f'最大公因数{L}')
# 求最小公倍数
l=[]
s=[]
i=1
while i<=a:
    if a%i==0 :
        l.append(i)
    i+=1
o=1
while o<=b:
    if b%o==0 :
        s.append(o)
    o+=1
if len(s)==2 and len(l)==2:
    print(a*b)
else:
    l.remove(1)
    s.remove(1)
    for i in l:
        for j in s:
            if i==j:
                k=(a/i)*(b/i)*i
                print(f'最小公倍数是{int(k)}')